package logic;

import model.Shain;
import dao.DaoShain;
import exception.BusinessException;
import exception.SystemException;

public class UpdateFinishLogic {
	//社員所情報アクセスクラス
	private DaoShain dao;
	
	public UpdateFinishLogic(){
	}
	
	public void executeUpdateFinish(Shain shain)throws SystemException, BusinessException{
		try{
			//入力チェック
			shain.checkUpdateInput();
		}
		//入力エラーの場合、業務例外をスローする
		catch (BusinessException be){
			throw be;
		}
		
		//入力チェックがなければ、DBアクセスする
		try{
			//DBアクセスオブジェクトの作成
			this.dao = new DaoShain();
			//変更前の社員番号と画面から入力された社員番号が同じ場合、重複チェックを行わない
			if(shain.shain_no.equals(shain.shain_no_old) != true){
				//社員番号が重複しないかどうかを確認
				this.dao.isNotExistShain(shain.shain_no);
			}
			//更新する
			this.dao.updateShain(shain);
		}
		//システム例外をスロー
		catch (SystemException se){
			throw se;
		}
		//社員番号が重複、もしくは更新失敗した場合、業務例外をスロー
		catch (BusinessException be){
			throw be;
		}
		//コネクションの削除
		finally{
			this.dao.closeConnection();
		}
	}
}